package licode;

public class L53 {
    public static int maxSubArray(int[] nums) {
        /*int total=nums[0];
        int currsum=nums[0];
        for (int i=1 ;i<nums.length;i++) {
            currsum = Math.max(currsum + nums[i], nums[i]);
            total = Math.max(total, currsum);
        }
        return total;*/



        int total = nums[0];  // 从数组的第一个元素开始
        int maxTotal = nums[0];  // 最大子数组和的初始值也是数组的第一个元素
        for (int i = 1; i < nums.length; i++) {
            if (total < 0) {
                // 如果当前的总和是负数，则从当前元素重新开始计数
                total = nums[i];
            } else {
                // 否则继续累加
                total += nums[i];
            }
            // 更新最大子数组和
            maxTotal = Math.max(maxTotal, total);
        }
        return maxTotal;


    }

    public static void main(String[] args) {
        int arr[]={-2,1,-3,4,-1,2,1,-5,4};
        int i = maxSubArray(arr);
        System.out.println(i);
    }
}
